package com.edu.compile.template;

import com.edu.compile.NodeModel;
import com.edu.compile.TemplateModel;
import com.edu.compile.template.buffer.Buffer;
import com.edu.model.tree.v2.TreeNode;

/**
 * 节点模板
 *
 * @author yanzhao
 * @date 2021/10/20 23:46
 * @since 1.0.0
 */
public interface NodeTemplateParse extends TemplateModel, NodeModel {

    /**
     * 解析脚本模板和相应的参数
     *
     * @param handler
     * @param treeNode
     * @param buffer
     */
    void parse(TemplatePolymerization handler, TreeNode<NodeTemplateParse> treeNode, Buffer buffer);

    /**
     * 后置解析方法体
     *
     * @param handler
     * @param buffer
     */
    void postParseMethodBody(TemplatePolymerization handler, Buffer buffer);

    /**
     * 解析方法调用签名
     *
     * @param handler
     * @param treeNode
     * @param buffer
     * @return
     */
    String parseMethodCall(TemplatePolymerization handler, TreeNode<NodeTemplateParse> treeNode, Buffer buffer);

}
